package edu.kit.csl.pisa.training.eva2;

/*
This file is part of the PISA Alignment Tool.

Copyright (C) 2013
Karlsruhe Institute of Technology
Cognitive Systems Lab (CSL)
Felix Stahlberg

PISA is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

PISA is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with PISA. If not, see <http://www.gnu.org/licenses/>.
*/

import edu.kit.csl.pisa.datatypes.SentenceAlignment;

/** 
 * This interface gives access to a alignment phenotype and except for 
 * problem specific operators should only be used by the optimization problem.
 * Problem specific mutation operators are {@link MutateAlignment} or
 * {@link MutateDeleteWordBoundary}. A problem specific crossover operator is
 * {@link CrossoverLeftRight}.
 */
public interface InterfaceDataTypeSentenceAlignment {
    /** 
     * This method allows you to set the alignment data.
     * 
     * @param align The new sentence alignment.
     */
    public void setPhenotype(SentenceAlignment align);

    /** 
     * This method allows you to set the alignment data, this can be used for
     * memetic algorithms.
     * 
     * @param align The new sentence alignment.
     */
    public void setGenotype(SentenceAlignment align);
    
    /** 
     * This method allows you to read the sentence alignment.
     * 
     * @return SentenceAlignment representing the sentence alignment
     */
    public SentenceAlignment getSentenceAlignment();
}
